<?php
/**
 * Controller de Fallas.
 *
 *
 * @filesource          
 * @copyright		
 * @link		http://www.pragmatia.com Pragmatia
 * @package		datagro
 * @subpackage	app.controllers
 * @version     1.1
 * @license		http://www.opensource.org/licenses/mit-license.php The MIT License
 * @author      Martin Radosta <mradosta@pragmatia.com>
 */


/**
 * Clase FallasController
 *
 * @package	    datagro
 * @subpackage	app.controllers
 */

class  FallasController extends AppController
{
    var $name = 'Fallas';
	var $uses = array("Falla", "Color");
	//var $components = array('Mailer'); 


/**
 * Index.
 *
 */
    function index()
    {
		if(!empty($this->data))
		{
			$condicion = $this->Filtro->generarCondicion($this->data['Filtro']);
			$this->paginate['conditions'] = $condicion;
		}

		if($this->data['Filtro']['accion'] == "imprimir") {
			$condicion = str_replace ("$$**$$", ":", $condicion);
			$condicion = str_replace ("*|*", " and ", $condicion);
			$condicion = str_replace ("|", " ", $condicion);
			$condicion = str_replace ("_expandir_ and", "%'", $condicion);
			$condicion = str_replace (">=", ">= '", $condicion);
			$condicion = str_replace ("<=", "<= '", $condicion);
			$condicion = str_replace ("like ", "like '", $condicion);
			$condicion = preg_replace ("/ [0-9]+:[0-9]+/", "'", $condicion);
			$this->set('registros', $this->Falla->findAll($condicion));
			$this->render("reporte", "excel");
		}
		else {
			$this->set('colores', $this->Color->generateList(null, null, null, "{n}.Color.falla", "{n}.Color.color"));
			$this->set('registros', $this->paginate());
		}
    }


/**
 * View.
 *
 */
   function view($id = false) 
   {
        if ($id && is_numeric($id))
        {
            $this->data = $this->Falla->read(null, $id);
        }
   }  


/**
 * Delete.
 *
 */
   function delete($id = false) 
   {
        if ($id && is_numeric($id))
        {
			if ($this->Suceso->delete($id)) {
				$this->Session->setFlash('El suceso se elimino correctamente.', 'ok');	
			}
			else {
				$this->Session->setFlash('El suceso no pudo ser eliminado correctamente.', 'error');	
			}
			$this->redirect("index", null, true);
        }    
   }  


/**
 * Reportes.
 *
 */
	function reporte($tipo = "pdf") {
		if($this->data['Filtro']['accion']=="buscar") {
			unset($this->data['Suceso']);
		}
		//$filtro = $this->data['Filtro'];

		if($this->Session->check('Sim')) {
			$sim = $this->Session->read('Sim');
			$this->data['Filtro']['Suceso-sim_id'] = $sim['Sim']['id'];
		}
		else {
			$this->Session->setFlash('Debe seleccionar un Modulo antes de continuar.', 'error');
			$this->redirect("../sims/seleccionar", null, true);
		}

		if(isset($this->data['Reporte']['tipo']) && ($this->data['Reporte']['tipo'] == "pdf" || $this->data['Reporte']['tipo'] == "excel"))
			$tipo = $this->data['Reporte']['tipo'];
		
		$usuario = $this->Session->read('Usuario');
		if(empty($usuario['Usuario']['usuario_id'])) //es un padre, ve todos los sucesos de el y de sus hijos
		{
			$this->data['Filtro']['Suceso-usuario_id'] = $usuario['Usuario']['id'];
			$this->set('clientes', $this->Suceso->Usuario->generateList(array("usuario_id"=>$usuario['Usuario']['id']), null, null, null, "{n}.Usuario.nombre"));
		}
		else { //es un hijo, solo ve los sucesos de el
			if(!empty($usuario['Usuario']['numero_asociado'])) {
				$this->data['Filtro']['Suceso-cliente_id'] = $usuario['Usuario']['id'];
			}

			if(!empty($usuario['Usuario']['fecha_hora_desde']) && $usuario['Usuario']['fecha_hora_desde'] <> "0000-00-00 00:00:00") {
				$this->data['Filtro']['Suceso-fecha_hora__desde'] = $usuario['Usuario']['fecha_hora_desde'];
			}
			if(!empty($usuario['Usuario']['fecha_hora_hasta']) && $usuario['Usuario']['fecha_hora_hasta'] <> "0000-00-00 00:00:00") {
				$this->data['Filtro']['Suceso-fecha_hora__hasta'] = $usuario['Usuario']['fecha_hora_hasta'];
			}
		}

		$que =  null;
		if(isset($this->data['Filtro']['accion']) && !empty($this->data['Filtro']['accion']) && $this->data['Filtro']['accion'] != "buscar" && $this->data['Filtro']['accion'] != "limpiar") {
			$que = $this->data['Filtro']['accion'];
			if(substr($que, 0, 5) ==  "todo_") {
				unset($this->data['Filtro']['Suceso-tipo']);
				unset($this->data['Filtro']['Suceso-cliente_id']);
				unset($this->data['Filtro']['Suceso-fecha_hora__desde']);
				unset($this->data['Filtro']['Suceso-fecha_hora__hasta']);
			}
			elseif(substr($que, 0, 10) == "seleccion_") {
				$seleccionados = false;
				if(isset($this->data['Suceso']))
					$seleccionados = $this->Filtro->extraerIdsSeleccionados($this->data['Suceso']);

				if($seleccionados)
					$this->data['Filtro']['Suceso-id'] = $seleccionados;
			}
		}
		//d($this->data);
		$condicion = $this->Filtro->generarCondicion($this->data['Filtro']);
		$this->paginate['conditions'] = $condicion;
		$this->paginate['order'] = "fecha_hora asc";

		$etiquetas_carga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"9"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_carga))
			$tipos[9] = 9;
		$etiquetas_descarga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"10"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_descarga))
			$tipos[10] = 10;
		$etiquetas_cierre = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"11"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_cierre))
			$tipos[11] = 11;
					
		$tipos_sucesos = $this->Dominio->generateList(array("nombre"=>"tipo_suceso"), null, null, null, "{n}.Dominio.valor");
		$tipos_sucesos = array_intersect_key($tipos_sucesos, $tipos);
		$this->set('tipos_sucesos', $tipos_sucesos);
		$this->set('tipo', $tipo);
		
		if(!empty($que)) {

			if(strstr($que, "todo_")) {
				$this->paginate['limit']= 100000;
			}
			elseif(strstr($que, "busqueda_")) {
				$this->paginate['limit']= 100000;
			}
			elseif(strstr($que, "pagina_")) {
				$pagina = $this->data['Reporte']['pagina'];
				$this->paginate['page'] = $pagina;
			}
			elseif(strstr($que, "seleccion_")) {
				//$this->paginate['conditions'] = $condicion;
			}

			$this->Suceso->recursive = 2;
			$registros = $this->paginate();
			$this->set('registros', $registros);
			//$this->data['Filtro'] = $filtro;

			if(count($registros) == 0) {
				$this->render("reporte"); 
				exit;
			}

			$this->set('registros', $registros);
			$this->set('etiquetas', $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.equipo_id"=>$sim['Equipo']['id']), null, "Etiqueta.secuencia"));
			//d($this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.equipo_id"=>$sim['Equipo']['id']), null, "Etiqueta.secuencia"));
			if($tipo == "excel") {
			   
			   $this->render("reporte_excel", "excel");
			}
			elseif($tipo == "pdf") {
			   $this->render("reporte_pdf", "pdf");
			}
		}
		else {
			$this->set('registros', $this->paginate());
		}
   }  
}
?>